/*
 * Copyright (c) 2022 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

declare interface ArkTools {
    isAOTCompiled(args: any): boolean;
}
declare function print(arg:any):string;

print(1 + 1);  //: 2
print(1 + 1.1);  //: 2.1
print(1 + 1.1);  //: 2.1
print(0.1 + 1.1)  //: 1.2000000000000002
print("hello" + "world")  //: helloworld
print("hello" + 1)  //: hello1

let addr = function (rhs:any) {
    return "a" + rhs;
}

let addl = function (lhs:any) {
    return lhs + "a";
}

if (ArkTools.isAOTCompiled(addr)) {
    print("addr compiled") //aot: addr compiled
}

if (ArkTools.isAOTCompiled(addl)) {
    print("addl compiled") //aot: addl compiled
}

print(addr(1)) //: a1
print(addr("1"))  //: a1
print(addl(1))  //: 1a
print(addl("1"))  //: 1a
